The present invention relates to data storage optimization, and more particularly to allocating a resource of a storage device to a storage optimization operation.
A storage device with a hierarchical storage architecture is often built for use by one or more hosts to store data so as to achieve a balance between storage cost and storage performance. Specifically, the hierarchical storage architecture can be formed by using storage system with different performances and costs. The storage systems can be mechanical hard disks (HDDs), flash-based solid state disks (SSDs) and so on, which have different performance characteristics (e.g., rotating speeds). For example, a 15,000 rpm HDD, a 7,200 rpm HDD, and an SSD can be used to build a 3-layer storage architecture. In order to improve usage efficiency of the storage device and reduce usage cost, it is often necessary to perform a hierarchical storage optimization operation on data stored therein, i.e., to transfer data stored in a certain storage layer to another storage layer according to characteristics of the data. For example, data which are frequently accessed (i.e., hot data) can be transferred from an HDD which has a slower access speed to an SSD which is more expensive but has a faster access speed so as to increase the access speed of the data, while idle data or data which are accessed less frequently (i.e., cold data) can be transferred from the SSD to the HDD which has a slower access speed but is cheaper so as to reduce the storage cost. This hierarchical storage optimization operation consumes resources of the storage device, such as a bandwidth, etc., and thus will affect customer workload which runs on the storage device and also needs to consume resources.
Another trend in data storage is to connect a high-speed-flash-based Direct Attached Storage (DAS) device to the host. The DAS device is used as a cache memory to store data in order to reduce data access delay. In this case, a cache storage optimization operation is required. Specifically, when a customer of the host issues a data read request, but the request does not hit (i.e., the data does not exist in the cache memory), the host reads the requested data from the storage device described above and supplies it to the customer. In order to increase the hit rate of subsequent data read requests, the host populates the data from the storage device into the cache memory, that is to say, the optimization operation is performed asynchronously. However, the storage capacity of the DAS device is usually large. Thus during warm-up of the DAS device or during its customer workload transition, this cache storage optimization operation will impose a great burden on the storage device, thereby affecting the customer workload running on the storage device.
A way to allocate resources of the storage device to storage optimization operations executed by the host and/or the storage device are needed, so as to allow the storage optimization operations to be performed on the host and/or storage device to improve its performance, while imposing a small impact on the normal customer workload of the storage device.